Co-processors have often been used to accelerate computational performance. For example, early microprocessors were unable to include floating-point computation circuitry due to chip area limitations. Doing floating-point computations in software is extremely slow so this circuitry was often placed in a second chip which was activated whenever a floating-point computation was required. As chip technology improved, the microprocessor chip and the floating-point co-processor chip were combined together.
A similar situation occurs today with specialized computational algorithms. Standard microprocessors do not include circuitry for performing these algorithms because they are often specific to only a few users. By using an FPGA (field programmable gate-array) as a co-processor, an algorithm can be designed and programmed into hardware to build a circuit that is unique for each application, resulting in a significant acceleration of the desired computation.